package com.mlethe.library.recyclerview.listener;

import android.graphics.Canvas;

import androidx.annotation.NonNull;

import com.mlethe.library.recyclerview.viewholder.ViewHolder;

/**
 * 滑动删除监听
 *
 * @author Mlethe
 * @date 2020/9/24
 */
public interface OnItemSwipeListener<T> {
    /**
     * 开始滑动
     */
    void onItemSwipeStart(@NonNull ViewHolder viewHolder, T item, int position);

    /**
     * swipe 操作结束回调
     * 如果你在开始的时候改变了视图，你应该在这里重置，不管这个item是否删除成功。
     *
     * @param item     如果 item 删除成功，item 为 null
     * @param position 如果 item 删除成功，position 为 -1
     */
    void onItemSwipeClear(@NonNull ViewHolder viewHolder, T item, int position);

    /**
     * swipe 到达滑动消失的距离
     * item 删除成功回调
     */
    void onItemSwiped(@NonNull ViewHolder viewHolder, T item, int position);

    /**
     * 在滑动留下的空白处绘制
     *
     * @param canvas            空白的画布
     * @param viewHolder        正在被用户操作的 ViewHolder
     * @param dX                X轴移动的距离
     * @param dY                Y轴移动的距离
     * @param isCurrentlyActive 如果当前被用户操作为true，反之为false
     */
    void onItemSwipeMoving(@NonNull Canvas canvas, @NonNull ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive);
}
